// 主应用逻辑 - 工具切换和导航管理
class App {
    constructor() {
        this.currentTool = 'qrcode';
        this.init();
    }

    init() {
        this.bindEvents();
        this.loadTool(this.currentTool);
    }

    bindEvents() {
        // 工具导航点击事件
        document.querySelectorAll('.nav-link').forEach(link => {
            link.addEventListener('click', (e) => {
                e.preventDefault();
                const tool = e.currentTarget.dataset.tool;
                this.switchTool(tool);
            });
        });
    }

    switchTool(tool) {
        // 更新导航状态
        document.querySelectorAll('.nav-item').forEach(item => {
            item.classList.remove('active');
        });
        const activeNavItem = document.querySelector(`[data-tool="${tool}"]`).closest('.nav-item');
        if (activeNavItem) {
            activeNavItem.classList.add('active');
        }

        // 加载对应工具
        this.loadTool(tool);
        this.currentTool = tool;
    }

    async loadTool(tool) {
        const mainContent = document.getElementById('main-content');
        
        try {
            const response = await fetch(`tools/${tool}-tool.html`);
            const html = await response.text();
            mainContent.innerHTML = html;
            
            // 初始化各个工具
            switch(tool) {
                case 'qrcode':
                    if (typeof QRCodeTool !== 'undefined') {
                        // 强制重新创建二维码工具实例
                        QRCodeTool.instance = null;
                        window.qrCodeTool = QRCodeTool.getInstance();
                    }
                    break;
                case 'string':
                    if (typeof StringTool !== 'undefined') {
                        window.stringTool = new StringTool();
                    }
                    break;
                case 'sql':
                    if (typeof SQLTool !== 'undefined') {
                        window.sqlTool = new SQLTool();
                    }
                    break;
                case 'json':
                    if (typeof JSONTool !== 'undefined') {
                        // 确保重新创建JSON工具实例
                        window.jsonTool = new JSONTool();
                        // 延迟绑定事件，确保DOM已完全加载
                        setTimeout(() => {
                            if (window.jsonTool && window.jsonTool.ensureTabSwitching) {
                                window.jsonTool.ensureTabSwitching();
                            }
                        }, 100);
                    }
                    break;
            }
            
            // 确保主题管理器重新绑定事件
            if (window.themeManager) {
                window.themeManager.bindEvents();
            }
        } catch (error) {
            console.error('加载工具失败:', error);
            mainContent.innerHTML = '<p>加载工具失败，请刷新页面重试。</p>';
        }
    }
}

// 主题管理 - 支持系统偏好检测
class ThemeManager {
    constructor() {
        this.init();
    }

    init() {
        this.loadTheme();
        this.setupSystemThemeDetection();
    }

    loadTheme() {
        // 优先使用用户手动设置的主题，否则检测系统偏好
        const savedTheme = localStorage.getItem('theme');
        if (savedTheme) {
            document.documentElement.setAttribute('data-theme', savedTheme);
        } else {
            // 检测系统偏好
            const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
            const systemTheme = prefersDark ? 'dark' : 'light';
            document.documentElement.setAttribute('data-theme', systemTheme);
            console.log('使用系统主题偏好:', systemTheme);
        }
    }

    setupSystemThemeDetection() {
        // 监听系统主题变化
        const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
        
        const handleChange = (e) => {
            // 只有在用户没有手动设置主题时才跟随系统变化
            if (!localStorage.getItem('theme')) {
                const newTheme = e.matches ? 'dark' : 'light';
                document.documentElement.setAttribute('data-theme', newTheme);
                console.log('系统主题变化:', newTheme);
                
                // 如果当前是二维码工具，重新生成二维码
                const activeTool = document.querySelector('.tool-content.active');
                if (activeTool && activeTool.id === 'qrcode-tool') {
                    setTimeout(() => {
                        const qrTool = QRCodeTool.getInstance();
                        if (qrTool && qrTool.qrCodes && qrTool.qrCodes.length > 0) {
                            qrTool.generateQRCodes();
                        }
                    }, 100);
                }
            }
        };

        // 添加监听器
        if (mediaQuery.addEventListener) {
            mediaQuery.addEventListener('change', handleChange);
        } else {
            // 兼容旧版本浏览器
            mediaQuery.addListener(handleChange);
        }
    }
}

// 初始化应用
document.addEventListener('DOMContentLoaded', () => {
    new App();
    new ThemeManager();
    
    // 主题切换功能
    const themeToggle = document.getElementById('theme-toggle');
    if (themeToggle) {
        // 初始化按钮状态
        const updateButtonState = () => {
            const currentTheme = document.documentElement.getAttribute('data-theme') || 'light';
            const isSystemPreference = !localStorage.getItem('theme');
            
            themeToggle.setAttribute('title', 
                currentTheme === 'light' ? '切换到暗黑模式' : '切换到浅色模式'
            );
            
            // 添加系统偏好标识
            if (isSystemPreference) {
                themeToggle.setAttribute('data-system', 'true');
            } else {
                themeToggle.removeAttribute('data-system');
            }
        };
        
        updateButtonState();
        
        themeToggle.addEventListener('click', function() {
            const currentTheme = document.documentElement.getAttribute('data-theme') || 'light';
            const newTheme = currentTheme === 'light' ? 'dark' : 'light';
            
            document.documentElement.setAttribute('data-theme', newTheme);
            localStorage.setItem('theme', newTheme);
            
            this.setAttribute('title', 
                newTheme === 'light' ? '切换到暗黑模式' : '切换到浅色模式'
            );
            this.removeAttribute('data-system');
            
            console.log('手动设置主题:', newTheme);
            
            // 如果当前是二维码工具，重新生成二维码以适应新主题
            const activeTool = document.querySelector('.tool-content.active');
            if (activeTool && activeTool.id === 'qrcode-tool') {
                setTimeout(() => {
                    const qrTool = QRCodeTool.getInstance();
                    if (qrTool && qrTool.qrCodes && qrTool.qrCodes.length > 0) {
                        qrTool.generateQRCodes();
                    }
                }, 100);
            }
        });
        
        // 双击重置为系统偏好
        themeToggle.addEventListener('dblclick', function() {
            localStorage.removeItem('theme');
            const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
            const systemTheme = prefersDark ? 'dark' : 'light';
            
            document.documentElement.setAttribute('data-theme', systemTheme);
            updateButtonState();
            
            console.log('重置为系统主题:', systemTheme);
            
            // 重新生成二维码
            const activeTool = document.querySelector('.tool-content.active');
            if (activeTool && activeTool.id === 'qrcode-tool') {
                setTimeout(() => {
                    const qrTool = QRCodeTool.getInstance();
                    if (qrTool && qrTool.qrCodes && qrTool.qrCodes.length > 0) {
                        qrTool.generateQRCodes();
                    }
                }, 100);
            }
        });
    }
});